# 定义路由
import openai
from flask import render_template, request, redirect, url_for
from flask.blueprints import Blueprint

interview_bp = Blueprint("inter_view", __name__, url_prefix="/")

messages = []


@interview_bp.route("", methods=["get", "post"])
def interview():
    global messages
    if request.method == "POST":
        # 获取前端的输入信息
        animal = request.form.get("animal")
        if messages:
            # 有上下文历史
            messages.append({
                'role': 'user',
                'content': animal
            })
        else:
            # 第一次初始化
            messages.append({
                'role': 'user',
                'content': generate_prompt(animal)
            })
        print(f"messages: {messages}")
        response = openai.chat.completions.create(
            model='gpt-3.5-turbo',
            messages=messages,
            temperature=1.2
        )
        # 打印大模型的返回值
        answer = response.choices[0].message.content
        # 刷新首页，返回答案信息
        return redirect(url_for("inter_view.interview", result=answer))
    result = request.args.get("result")
    return render_template("index.html", result=result)


def generate_prompt(animal):
    return """你是一名软件测试工程师，你了解软件测试的技术与经验，你需要面试应聘者.
        我是应聘者，你会问我这个职位的面试问题。
        我希望你只以面试官的身份回答，一次只问一个问题，问我问题并等待我的回答。
        当我说结束面试的时候给出我的面试表现的评价
        我的输入是 {}
    """.format(
        animal.capitalize()
    )

